Separating Axis Theorem Explained | Coding A 2D Physics Engine In Java